parasite: Use template for button path
authorMatthias Clasen <mclasen@redhat.com>
Sun, 4 May 2014 15:09:52 +0000 (11:09 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 11 May 2014 02:04:14 +0000 (22:04 -0400)
modules/other/parasite/Makefile.am
modules/other/parasite/button-path.c
modules/other/parasite/button-path.h
modules/other/parasite/button-path.ui [new file with mode: 0644]
modules/other/parasite/module.c
modules/other/parasite/parasite.gresource.xml [new file with mode: 0644]
modules/other/parasite/window.c

index 03243d61e8efb0a554510970e239e1bc40247116..2b023dd2b64ac9a2ddf5ab6a03103841fa914f65 100644 (file)
@@ -2,7 +2,21 @@ moduledir = $(libdir)/gtk-3.0/modules
 
 module_LTLIBRARIES = libgtkparasite.la
 
+resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/parasite.gresource.xml)
+resources.h: parasite.gresource.xml
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/parasite.gresource.xml \
+               --target=$@ --sourcedir=$(srcdir) --c-name parasite --generate-header --manual-register
+resources.c: parasite.gresource.xml $(resource_files)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/parasite.gresource.xml \
+               --target=$@ --sourcedir=$(srcdir) --c-name parasite --generate-source --manual-register
+
+BUILT_SOURCES = \
+       resources.h \
+       resources.c
+
 libgtkparasite_la_SOURCES = \
+       resources.h \
+       resources.c \
        inspect-button.c \
        module.c \
        parasite.h \
@@ -49,4 +63,7 @@ libgtkparasite_la_LIBADD = \
        $(top_builddir)/gtk/libgtk-3.la \
        $(GTK_DEP_LIBS)
 
+EXTRA_DIST= \
+       $(resource_files)
+
 -include $(top_srcdir)/git.mk
index b8f35102fea962ac1d7d4604eeab78dae964ba24..2840949886e8af367593ed452a9c1e5e536a4981 100644 (file)
 
 struct _ParasiteButtonPathPrivate
 {
-    GtkWidget *sw;
-    GtkWidget *button_box;
+  GtkWidget *sw;
+  GtkWidget *button_box;
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE (ParasiteButtonPath, parasite_buttonpath, GTK_TYPE_BOX)
+G_DEFINE_TYPE_WITH_PRIVATE (ParasiteButtonPath, parasite_button_path, GTK_TYPE_BOX)
 
 static void
-parasite_buttonpath_init (ParasiteButtonPath *bp)
+parasite_button_path_init (ParasiteButtonPath *bp)
 {
-  GtkWidget *label;
-
-  bp->priv = parasite_buttonpath_get_instance_private (bp);
-
-  g_object_set (bp,
-                "orientation", GTK_ORIENTATION_HORIZONTAL,
-                NULL);
-
-  bp->priv->sw = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
-                               "hscrollbar-policy", GTK_POLICY_AUTOMATIC,
-                               "vscrollbar-policy", GTK_POLICY_NEVER,
-                               "hexpand", TRUE,
-                               NULL);
-  gtk_container_add (GTK_CONTAINER (bp), bp->priv->sw);
-
-  bp->priv->button_box = g_object_new (GTK_TYPE_BOX,
-                                       "orientation", GTK_ORIENTATION_HORIZONTAL,
-                                       "hexpand", TRUE,
-                                       "margin", 6,
-                                       NULL);
-  gtk_style_context_add_class (gtk_widget_get_style_context (bp->priv->button_box), "linked");
-  gtk_container_add (GTK_CONTAINER (bp->priv->sw), bp->priv->button_box);
-
-  label = g_object_new (GTK_TYPE_LABEL,
-                        "label", "Choose a widget through the inspector",
-                        "xalign", 0.5,
-                        "hexpand", TRUE,
-                        NULL);
-  gtk_container_add (GTK_CONTAINER (bp->priv->button_box), label);
+  bp->priv = parasite_button_path_get_instance_private (bp);
+  gtk_widget_init_template (GTK_WIDGET (bp));
 }
 
 static void
-parasite_buttonpath_class_init(ParasiteButtonPathClass *klass)
+parasite_button_path_class_init (ParasiteButtonPathClass *klass)
 {
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/parasite/button-path.ui");
+  gtk_widget_class_bind_template_child_private (widget_class, ParasiteButtonPath, sw);
+  gtk_widget_class_bind_template_child_private (widget_class, ParasiteButtonPath, button_box);
 }
 
 GtkWidget *
-parasite_buttonpath_new ()
+parasite_button_path_new (void)
 {
-    return GTK_WIDGET (g_object_new (PARASITE_TYPE_BUTTONPATH, NULL));
+  return GTK_WIDGET (g_object_new (PARASITE_TYPE_BUTTON_PATH, NULL));
 }
 
 void
-parasite_buttonpath_set_widget(ParasiteButtonPath *bp,
-                               GtkWidget *widget)
+parasite_button_path_set_widget (ParasiteButtonPath *bp,
+                                 GtkWidget          *widget)
 {
-  char *path, **words;
-  int i;
+  gchar *path, **words;
+  gint i;
   GtkWidget *b;
   GtkContainer *box = GTK_CONTAINER (bp->priv->button_box);
 
@@ -100,4 +78,4 @@ parasite_buttonpath_set_widget(ParasiteButtonPath *bp,
   g_free (path);
 }
 
-// vim: set et sw=4 ts=4:
+// vim: set et sw=2 ts=2:
index e05424c3e22a404439f62c117771c6b4fb684f25..b6e3e79a2da4fae08872346a94770b6d5fd1f42d 100644 (file)
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
-#ifndef _GTKPARASITE_BUTTONPATH_H_
-#define _GTKPARASITE_BUTTONPATH_H_
+#ifndef _GTKPARASITE_BUTTON_PATH_H_
+#define _GTKPARASITE_BUTTON_PATH_H_
 
 
 #include <gtk/gtk.h>
 
-#define PARASITE_TYPE_BUTTONPATH            (parasite_buttonpath_get_type())
-#define PARASITE_BUTTONPATH(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PARASITE_TYPE_BUTTONPATH, ParasiteButtonPath))
-#define PARASITE_BUTTONPATH_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PARASITE_TYPE_BUTTONPATH, ParasiteButtonPathClass))
-#define PARASITE_IS_BUTTONPATH(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PARASITE_TYPE_BUTTONPATH))
-#define PARASITE_IS_BUTTONPATH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PARASITE_TYPE_BUTTONPATH))
-#define PARASITE_BUTTONPATH_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PARASITE_TYPE_BUTTONPATH, ParasiteButtonPathClass))
+#define PARASITE_TYPE_BUTTON_PATH            (parasite_button_path_get_type())
+#define PARASITE_BUTTON_PATH(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PARASITE_TYPE_BUTTON_PATH, ParasiteButtonPath))
+#define PARASITE_BUTTON_PATH_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PARASITE_TYPE_BUTTON_PATH, ParasiteButtonPathClass))
+#define PARASITE_IS_BUTTON_PATH(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PARASITE_TYPE_BUTTON_PATH))
+#define PARASITE_IS_BUTTON_PATH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PARASITE_TYPE_BUTTON_PATH))
+#define PARASITE_BUTTON_PATH_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PARASITE_TYPE_BUTTON_PATH, ParasiteButtonPathClass))
 
 
 typedef struct _ParasiteButtonPathPrivate ParasiteButtonPathPrivate;
 
-typedef struct _ParasiteButtonPath {
-   GtkBox parent;
-   ParasiteButtonPathPrivate *priv;
+typedef struct _ParasiteButtonPath
+{
+  GtkBox parent;
+  ParasiteButtonPathPrivate *priv;
 } ParasiteButtonPath;
 
-typedef struct _ParasiteButtonPathClass {
-   GtkBoxClass parent;
+typedef struct _ParasiteButtonPathClass
+{
+  GtkBoxClass parent;
 } ParasiteButtonPathClass;
 
 
 G_BEGIN_DECLS
 
-GType parasite_buttonpath_get_type ();
-GtkWidget *parasite_buttonpath_new ();
-void parasite_buttonpath_set_widget (ParasiteButtonPath *bp,
-                                     GtkWidget *widget);
+GType      parasite_button_path_get_type   (void);
+GtkWidget *parasite_button_path_new        (void);
+void       parasite_button_path_set_widget (ParasiteButtonPath *bp,
+                                            GtkWidget          *widget);
 
 G_END_DECLS
 
 
-#endif // _GTKPARASITE_BUTTONPATH_H_
+#endif // _GTKPARASITE_BUTTON_PATH_H_
 
-// vim: set et sw=4 ts=4:
+// vim: set et sw=2 ts=2:
diff --git a/modules/other/parasite/button-path.ui b/modules/other/parasite/button-path.ui
new file mode 100644 (file)
index 0000000..2ab03a7
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="ParasiteButtonPath" parent="GtkBox">
+    <property name="orientation">horizontal</property>
+    <child>
+      <object class="GtkScrolledWindow" id="sw">
+        <property name="visible">True</property>
+        <property name="hscrollbar-policy">automatic</property>
+        <property name="vscrollbar-policy">never</property>
+        <property name="hexpand">True</property>
+        <child>
+          <object class="GtkButtonBox" id="button_box">
+            <property name="visible">True</property>
+            <property name="orientation">horizontal</property>
+            <property name="hexpand">True</property>
+            <property name="margin">6</property>
+            <property name="spacing">0</property>
+            <property name="layout-style">start</property>
+            <style>
+              <class name="linked"/>
+            </style>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="label">Choose a widget through the inspector</property>
+                <property name="hexpand">True</property>
+                <property name="xalign">0.5</property>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
index 3c7206068db93c881122b5fcd724ed3ca46dacaa..b093f45d343de6a1eb32b314514ec76f3e8f8ef0 100644 (file)
@@ -25,6 +25,7 @@
 #include "config.h"
 #include "parasite.h"
 #include "python-hooks.h"
+#include "resources.h"
 
 
 void
@@ -34,6 +35,8 @@ gtk_module_init(gint *argc, gchar ***argv)
     parasite_python_init();
 #endif
 
+    parasite_register_resource ();
+
     gtkparasite_window_create();
 }
 
diff --git a/modules/other/parasite/parasite.gresource.xml b/modules/other/parasite/parasite.gresource.xml
new file mode 100644 (file)
index 0000000..ec422df
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gtk/parasite">
+    <file>button-path.ui</file>
+  </gresource>
+</gresources>
index 9bf3f348d458e8dc7eb947a3de180aa479259d4a..bc6868d9af3c328dfe7943b5134182d73a075854 100644 (file)
@@ -53,7 +53,7 @@ on_widget_tree_selection_changed (ParasiteWidgetTree *widget_tree,
           GtkWidget *widget = GTK_WIDGET (selected);
 
           gtkparasite_flash_widget(parasite, widget);
-          parasite_buttonpath_set_widget (PARASITE_BUTTONPATH (parasite->button_path), widget);
+          parasite_button_path_set_widget (PARASITE_BUTTON_PATH (parasite->button_path), widget);
           parasite_classeslist_set_widget (PARASITE_CLASSESLIST (parasite->classes_list), widget);
           parasite_csseditor_set_widget (PARASITE_CSSEDITOR (parasite->widget_css_editor), widget);
         }
@@ -266,7 +266,7 @@ gtkparasite_window_create()
                               parasite_csseditor_new (TRUE),
                               gtk_label_new ("Custom CSS"));
 
-    window->button_path = parasite_buttonpath_new ();
+    window->button_path = parasite_button_path_new ();
     gtk_container_add (GTK_CONTAINER (box), window->button_path);
 
     hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);